#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

/*
    remove 删除元素
        remove(first, last, value)  删除first到last区间内所有等于value的元素
        删除之后的容器大小不会改变，个数也不会改变
        实现过程：将删除之后的数据替换到原始的数据中
            55，88，88，88，99，88   -->  删除之后的数据是 55，99
            最后得到55，99，88，88，99，88
        返回值是删除之后数据的最后一个位置的迭代器

    remove_if 删除满足条件的元素
        remove_if(first, last, pred)  删除first到last区间内所有满足pred的元素

*/


int main()
{
    int buf[5] = {45,87,185,23,54};
    vector<int> v1 = {15,322,322,44,615};
    vector<int> v2 = {15,322,322,44,615};

    auto newV = remove(v1.begin(), v1.end(), 322);
    cout << "删除之后的数据："  << endl;
    for (auto i : v1)
    {
        cout << i << " ";
    }
    cout << endl;
    cout << "真正的结果：" << endl;
    for (auto i = v1.begin(); i != newV; i++)
    {
        cout << *i << " ";
    }
    cout << endl;

    cout << "===========remove_if===========" << endl;
    auto newV2 = remove_if(v2.begin(), v2.end(), [](int i){return i > 100;});
    cout << "删除大于100数据:" << endl;
    for (auto i = v2.begin(); i != newV2; i++) 
    {
        cout << *i << " ";  
    }
    cout << endl;

    return 0;
}
